#include <iostream>
#include <stack>
using namespace std;

// class MinStack {
//     stack<int> x_stack;
//     stack<int> min_stack;
// public:
//     /** initialize your data structure here. */
//     MinStack() 
//     {
//         min_stack.push(INT_MAX);
//     }
    
//     void push(int x) 
//     {
//         x_stack.push(x);
//         min_stack.push(min(min_stack.top(),x));
//     }

//     void pop() 
//     {
//         x_stack.pop();
//         min_stack.pop();
//     }
    
//     int top() 
//     {
//         return x_stack.top();
//     }
    
//     int getMin() 
//     {
//         return min_stack.top();
//     }
// };

class MinStack {
    stack<int> x_stack;
    int min = INT_MAX;
public:
    /** initialize your data structure here. */
    MinStack() {}
    
    void push(int x) 
    {
        if(x <= min)
        {
            x_stack.push(min);
            min = x;
        }
        x_stack.push(x);
    }

    void pop() 
    {
        if(x_stack.top() == min)
        {
            x_stack.pop();
            min = x_stack.top();
        }
        x_stack.pop();    
    }
    
    int top() 
    {
        return x_stack.top();
    }
    
    int getMin() 
    {
        return min;
    }
};

int main()
{
    return 0;
}